home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 14 / CU Amiga Magazine's Super CD-ROM 14 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-09].iso / CUCD / Programming / GMS / Source / C / Blitter / PixelList.c < prev   
Encoding:
C/C++ Source or Header  |  1997-05-04  |  2.2 KB  |  86 lines

  1. /*
  2. ** AGA PixelList Demo
  3. ** ------------------
  4. **
  5. ** To compile with SAS/C:
  6. **
  7. **   1> sc PixelList.c link startup=LIB:gms.o data=far
  8. */
  9.  
  10. #include <proto/games.h>
  11.  
  12. extern struct GMSBase *GMSBase;
  13. ULONG _XCEXIT = NULL;
  14. ULONG PREFSNAME = DEFAULT;
  15.  
  16. #define AMT_PIXELS 32
  17.  
  18. ULONG Palette[] = {
  19.   0x000000,0x101010,0x171717,0x202020,0x272727,0x303030,0x373737,0x404040,
  20.   0x474747,0x505050,0x575757,0x606060,0x676767,0x707070,0x777777,0x808080,
  21.   0x878787,0x909090,0x979797,0xa0a0a0,0xa7a7a7,0xb0b0b0,0xb7b7b7,0xc0c0c0,
  22.   0xc7c7c7,0xd0d0d0,0xd7d7d7,0xe0e0e0,0xe0e0e0,0xf0f0f0,0xf7f7f7,0xffffff
  23. };
  24.  
  25. struct PixelEntry Pixels[AMT_PIXELS] = {
  26.   160,128,0,  160,128,1,  160,128,2,  160,128,3,  160,128,4,  160,128,5,
  27.   160,128,6,  160,128,7,  160,128,8,  160,128,9,  160,128,10, 160,128,11,
  28.   160,128,12, 160,128,13, 160,128,14, 160,128,15, 160,128,16, 160,128,17,
  29.   160,128,18, 160,128,19, 160,128,20, 160,128,21, 160,128,22, 160,128,23,
  30.   160,128,24, 160,128,25, 160,128,26, 160,128,27, 160,128,28, 160,128,29,
  31.   160,128,30, 160,128,31
  32. };
  33.  
  34. struct PixelList PixelList = {
  35.   AMT_PIXELS,
  36.   sizeof(struct PixelEntry),
  37.   Pixels
  38. };
  39.  
  40. struct GameScreen *GameScreen;
  41.  
  42. /*=========================================================================*/
  43.  
  44. void main(void)
  45. {
  46.   UWORD i;
  47.   ULONG mouse;
  48.  
  49.   if (AllocBlitter() == NULL) {
  50.     if (GameScreen = AddScreenTags(TAGS_GAMESCREEN,NULL,
  51.          GSA_AmtColours,32,
  52.          GSA_Palette,Palette,
  53.          GSA_Attrib,DBLBUFFER,
  54.          TAGEND)) {
  55.  
  56.       InitJoyPorts();
  57.       ShowScreen(GameScreen);
  58.  
  59.       do {
  60.         ClrScreen(GameScreen,BUFFER2);
  61.  
  62.         for(i=0; i<(AMT_PIXELS-1); i++) {
  63.           Pixels[i].YCoord += 1;            /* Y Coord down 1 */
  64.           if ((Pixels[i].Colour -= 1) < 0)  /* Colour value down 1 */
  65.             Pixels[i].Colour = 1;
  66.         }
  67.  
  68.         mouse = ReadJoyPort(JPORT1,JT_ZBXY);
  69.         Pixels[AMT_PIXELS-1].XCoord += (BYTE)(mouse>>8)+(FastRandom(3)-1);
  70.         Pixels[AMT_PIXELS-1].YCoord += (BYTE)(mouse)+(FastRandom(3)-1);
  71.  
  72.         for(i=0; i<(AMT_PIXELS-1); i++)
  73.           Pixels[i] = Pixels[i+1];
  74.  
  75.         DrawPixelList(GameScreen,BUFFER2,&PixelList);
  76.         WaitVBL();
  77.         SwapBuffers(GameScreen);
  78.       } while (!(mouse & MB_LMB));
  79.  
  80.     DeleteScreen(GameScreen);
  81.     }
  82.   FreeBlitter();
  83.   }
  84. }
  85.  
  86.